﻿using System.Text.RegularExpressions;

namespace BDRUtils.Utility
{
    public class RegChecker
    {

        /// <summary>
        /// 判断字符串是否是一个合法的手机号
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static bool IsMobilePhone(string input)
        {
            return Regex.IsMatch(input, "^1[345789]\\d{9}$");
        }

        /// <summary>
        /// 判断字符串是否符合邮箱格式
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static bool IsEmail(string input)
        {
            return Regex.IsMatch(input, @"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");
        }

        /// <summary>
        /// 判断字符串是否只包含中文字符、英文字母、数字
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static bool IsName(string input)
        {
            return Regex.IsMatch(input, @"^[\u4e00-\u9fa5_a-zA-Z0-9]+$");
        }

        /// <summary>
        ///含数字和字母的密码验证
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static bool IsStrongPwd(string psw)
        {
            var regex = new Regex(@"
(?=.*[0-9])                     #必须包含数字
(?=.*[a-zA-Z])                  #必须包含小写或大写字母
(?=([\x21-\x7e]+)[^a-zA-Z0-9])  #必须包含特殊符号
.{8,30}                         #至少8个字符，最多30个字符
", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
            return regex.IsMatch(psw);
        }

        /// <summary>
        /// 放行get方法的api
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static bool IsGetApi(string url)
        {
            return Regex.IsMatch(url, @"^/api/\w{1,}/\w{1,}/get*", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
        }
    }
}
